#include <linux/module.h>
#include <linux/gfp.h>
#include <linux/init.h>
#include <linux/mm_types.h>
#include <linux/mm.h>

#define MEM_MAX_SIZE 10240

char *pmem = NULL;

static int __init kmallocinit(void)
{
    pmem = (char*) kmalloc(MEM_MAX_SIZE, GFP_KERNEL);
    if (NULL == pmem)
    {
        printk("调用kmalloc函数分配连续的内存失败。\n");
        return 0;
    }
    printk("调用kmalloc函数分配连续的内存成功。分配的地址是：0x%lx\n", (unsigned long) pmem);

    return 0;
}

static void __exit kmallocexit(void)
{
    if (pmem != NULL)
    {
        kfree(pmem);
        printk("调用kfree释放内存成功.\n");
    }
    printk("正常退出linux内核\n");   
}

MODULE_LICENSE("GPL");

module_init(kmallocinit);
module_exit(kmallocexit);